System and method for placing spine groups within a display

ABSTRACT

A system and method for placing spine groups within a display is provided. A shape is defined within a display. Groups of cluster spines are placed circumferentially around the defined shape. Overlap between at least two of the spine groups is identified. One of the overlapping spine groups is rotated in one of a clockwise and anticlockwise direction away from the other overlapping spine group. Overlap between the rotated spine group and at least one of the other overlapping spine group and another placed spine group is identified. The rotated overlapping spine group is moved in an outward direction away from the shape.

CROSS-REFERENCE TO RELATED APPLICATIONS

This patent application is a continuation of U.S. Pat. No. 8,792,733,issued Jul. 29, 2014, which is a continuation of U.S. Pat. No.8,639,044, issued Jan. 28, 2014, which is a continuation of U.S. Pat.No. 8,369,627, issued Feb. 5, 2013, which is a continuation of U.S. Pat.No. 8,155,453, issued Apr. 10, 2012, which is a continuation of U.S.Pat. No. 7,983,492, issued Jul. 19, 2011, which is a continuation ofU.S. Pat. No. 7,885,468, issued Feb. 8, 2011, which is a continuation ofU.S. Pat. No. 7,720,292, issued May 18, 2010, which is a continuation ofU.S. Pat. No. 7,440,622, issued Oct. 21, 2008, which is acontinuation-in-part of U.S. Pat. No. 7,191,175, issued Mar. 13, 2007,the priority dates of which are claimed and the disclosures of which areincorporated by reference.

FIELD

The present invention relates in general to data visualization and, inparticular, to a system and method for generating groups of clusterspines for display.

BACKGROUND

In general, data visualization transforms numeric or textual informationinto a graphical display format to assist users in understandingunderlying trends and principles in the data. Effective datavisualization complements and, in some instances, supplants numbers andtext as a more intuitive visual presentation format than raw numbers ortext alone. However, graphical data visualization is constrained by thephysical limits of computer display systems. Two-dimensional andthree-dimensional visualized information can be readily displayed.However, visualized information in excess of three dimensions must beartificially compressed if displayed on conventional display devices.Careful use of color, shape and temporal attributes can simulatemultiple dimensions, but comprehension and usability become difficult asadditional layers of modeling are artificially grafted into a two- orthree-dimensional display space.

Mapping multi-dimensional information into a two- or three-dimensionaldisplay space potentially presents several problems. For instance, aviewer could misinterpret dependent relationships between discreteobjects displayed adjacently in a two or three dimensional display.Similarly, a viewer could erroneously interpret dependent variables asindependent and independent variables as dependent. This type of problemoccurs, for example, when visualizing clustered data, which presentsdiscrete groupings of related data. Other factors further complicate theinterpretation and perception of visualized data, based on the Gestaltprinciples of proximity, similarity, closed region, connectedness, goodcontinuation, and closure, such as described in R. E. Horn, “VisualLanguage: Global Communication for the 21′ Century,” Ch. 3, MacroVUPress (1998), the disclosure of which is incorporated by reference.

Conventionally, objects, such as clusters, modeled in multi-dimensionalconcept space are generally displayed in two- or three-dimensionaldisplay space as geometric objects. Independent variables are modeledthrough object attributes, such as radius, volume, angle, distance andso forth. Dependent variables are modeled within the two or threedimensions. However, poor cluster placement within the two or threedimensions can mislead a viewer into misinterpreting dependentrelationships between discrete objects.

Consider, for example, a group of clusters, which each contain a groupof points corresponding to objects sharing a common set of traits. Eachcluster is located at some distance from a common origin along a vectormeasured at a fixed angle from a common axis. The radius of each clusterreflects the number of objects contained. Clusters located along thesame vector are similar in traits to those clusters located on vectorsseparated by a small cosine rotation. However, the radius and distanceof each cluster from the common origin are independent variablesrelative to other clusters. When displayed in two dimensions, theoverlaying or overlapping of clusters could mislead the viewer intoperceiving data dependencies between the clusters where no such datadependencies exist.

Conversely, multi-dimensional information can be advantageously mappedinto a two- or three-dimensional display space to assist withcomprehension based on spatial appearances. Consider, as a furtherexample, a group of clusters, which again each contain a group of pointscorresponding to objects sharing a common set of traits and in which oneor more “popular” concepts or traits frequently appear in some of theclusters. Since the distance of each cluster from the common origin isan independent variable relative to other clusters, those clusters thatcontain popular concepts or traits may be placed in widely separatedregions of the display space and could similarly mislead the viewer intoperceiving no data dependencies between the clusters where such datadependencies exist.

The placement of cluster groups within a two-dimensional display space,such as under a Cartesian coordinate system, also imposes limitations onsemantic interrelatedness, density and user interface navigation. Withinthe display space, cluster groups can be formed into “spines” ofsemantically-related clusters, which can be placed within the displayspace with semantically-related groups of cluster spines appearingproximally close to each other and semantically-unrelated cluster spinegroups appearing in more distant regions. This form of cluster spinegroup placement, however, can be potentially misleading. For instance,larger cluster spine groups may need to be placed to accommodate theplacement of smaller cluster spine groups while sacrificing thedisplaying of the semantic interrelatedness of the larger cluster spinegroups. Moreover, the density of the overall display space is limitedpragmatically and the placement of too many cluster spine groups canoverload the user. Finally, navigation within such a display space canbe unintuitive and cumbersome, as large cluster spine group placement isdriven by available display space and the provisioning of descriptivelabels necessarily overlays or intersects placed cluster spine groups.

One approach to depicting thematic relationships between individualclusters applies a force-directed or “spring” algorithm. Clusters aretreated as bodies in a virtual physical system. Each body hasphysics-based forces acting on or between them, such as magneticrepulsion or gravitational attraction. The forces on each body arecomputed in discrete time steps and the positions of the bodies areupdated. However, the methodology exhibits a computational complexity oforder O(n²) per discrete time step and scales poorly to clusterformations having a few hundred nodes. Moreover, large groupings ofclusters tend to pack densely within the display space, thereby losingany meaning assigned to the proximity of related clusters.

Therefore, there is a need for an approach to providing a visual displayspace reflecting tighter semantic interrelatedness of cluster spinegroups with increased display density. Preferably, such an approachwould further form the cluster spine groups by semantically relatingentire cluster spines, rather than individual anchor points within eachcluster spine.

There is a further need for an approach to orientingsemantically-related cluster spine groups within a two-dimensionalvisual display space relative to a common point of reference, such as acircle. Preferably, such an approach would facilitate improved userinterface features through increased cluster spine group density andcluster spine group placement allowing improved descriptive labeling.

SUMMARY

Relationships between concept clusters are shown in a two-dimensionaldisplay space by combining connectedness and proximity. Clusters sharing“popular” concepts are identified by evaluating thematically-closestneighboring clusters, which are assigned into linear cluster spinesarranged to avoid object overlap. The cluster arrangement methodologyexhibits a highly-scalable computational complexity of order O(n).

An embodiment provides a system and method for arranging conceptclusters in thematic neighborhood relationships in a shapedtwo-dimensional visual display space. A set of clusters is selected froma concept space. The concept space includes a multiplicity of clusterswith concepts visualizing document content based on extracted concepts.A theme in each of a plurality of the clusters is identified. Each themeincludes at least one such concept ranked within the cluster. Aplurality of unique candidate spines is logically formed. Each candidatespine includes clusters commonly sharing at least one such concept. Oneor more of the clusters are assigned to one such candidate spine havinga substantially best fit. Each best fit candidate spine sufficientlyunique from each other such best fit candidate spine is identified. Theidentified best fit candidate spine is placed in a visual display space.Each non-identified best fit candidate spine is placed in the visualdisplay space relative to an anchor cluster on one such identified bestfit candidate spine.

A further embodiment provides a system and method for placing spinegroups within a display. A shape is defined within a display. Groups ofcluster spines are placed circumferentially around the defined shape.Overlap between at least two of the spine groups is identified. One ofthe overlapping spine groups is rotated in one of a clockwise andanticlockwise direction away from the other overlapping spine group.Overlap between the rotated spine group and at least one of the otheroverlapping spine group and another placed spine group is identified.The rotated overlapping spine group is moved in an outward directionaway from the shape.

Still other embodiments of the present invention will become readilyapparent to those skilled in the art from the following detaileddescription, wherein are one embodiments of the invention by way ofillustrating the best mode contemplated for carrying out the invention.As will be realized, the invention is capable of other and differentembodiments and its several details are capable of modifications invarious obvious respects, all without departing from the spirit and thescope of the present invention. Accordingly, the drawings and detaileddescription are to be regarded as illustrative in nature and not asrestrictive.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram showing a system for arranging conceptclusters in thematic neighborhood relationships in a shapedtwo-dimensional visual display space, in accordance with the presentinvention.

FIG. 2 is a block diagram showing the system modules implementing thedisplay generator of FIG. 1.

FIG. 3 is a flow diagram showing a method for arranging concept clustersin thematic neighborhood relationships in a shaped two-dimensionalvisual display space, in accordance with the present invention.

FIG. 4 is a flow diagram showing the routine for generating clusterconcepts for use in the method of FIG. 3.

FIG. 5 is a flow diagram showing the routine for selecting candidatespines for use in the method of FIG. 3.

FIG. 6 is a flow diagram showing the routine for assigning clusters tocandidate spines for use in the method of FIG. 3.

FIG. 7 is a flow diagram showing the routine for placing unique seedspines for use in the method of FIG. 3.

FIG. 8 is a flow diagram showing the routine for placing remaining bestfit spines for use in the method of FIG. 3.

FIG. 9 is a flow diagram showing the function for selecting an anchorcluster for use in the routine of FIG. 8.

FIG. 10 is a data representation diagram showing, by way of example, aview of a cluster spine.

FIGS. 11A-C are data representation diagrams showing anchor pointswithin cluster spines.

FIG. 12 is a flow diagram showing the function for grafting a spinecluster onto a spine for use in the routine of FIG. 8.

FIG. 13 is a data representation diagram showing, by way of example,cluster placement relative to an anchor point.

FIG. 14 is a data representation diagram showing, by way of example, acompleted cluster placement.

FIG. 15 is a block diagram showing the system modules implementing thedisplay generator of FIG. 1, in accordance with a further embodiment.

FIG. 16 is a flow diagram showing a method for arranging conceptclusters in thematic neighborhood relationships in a shapedtwo-dimensional visual display space, in accordance with a furtherembodiment.

FIG. 17 is a flow diagram showing the routine for assigning clusters tobest fit candidate spines for use in the method of FIG. 16.

FIG. 18 is a flow diagram showing the routine for placing remainingcluster spines for use in the method of FIG. 16.

FIG. 19 is a flow diagram showing the routine for placing remainingclusters for use in the method of FIG. 16.

FIG. 20 is a data representation diagram showing, by way of example, acluster spine group.

FIG. 21 is a flow diagram showing the routine for placing cluster spinegroups for use in the method of FIG. 16.

FIG. 22 is a data representation diagram showing, by way of example, aradially-oriented layout.

FIGS. 23A-C are data representation diagrams showing, by way ofexamples, cluster spine group placements.

FIG. 24 is a data representation diagram showing, by way of example,cluster spine group overlap removal.

DETAILED DESCRIPTION

Glossary

-   Concept: One or more preferably root stem normalized words defining    a specific meaning-   Theme: One or more concepts defining a semantic meaning-   Cluster: Grouping of documents containing one or more common themes.-   Spine: Grouping of clusters sharing a single concept preferably    arranged linearly along a vector. Also referred to as a cluster    spine.-   Spine Group: Set of connected and semantically-related spines.    The foregoing terms are used throughout this document and, unless    indicated otherwise, are assigned the meanings presented above.    System Overview

FIG. 1 is a block diagram showing a system 10 for arranging conceptclusters in thematic neighborhood relationships in a shapedtwo-dimensional visual display space, in accordance with the presentinvention. By way of illustration, the system 10 operates in adistributed computing environment, which includes a plurality ofheterogeneous systems and document sources. A backend server 11 executesa workbench suite 31 for providing a user interface framework forautomated document management, processing and analysis. The backendserver 11 is coupled to a storage device 13, which stores documents 14,in the form of structured or unstructured data, and a database 30 formaintaining document information. A production server 12 includes adocument mapper 32, that includes a clustering engine 33 and displaygenerator 34. The clustering engine 33 performs efficient documentscoring and clustering, such as described in commonly-assigned U.S. Pat.No. 7,610,313, issued Oct. 27, 2009, the disclosure of which isincorporated by reference. The display generator 34 arranges conceptclusters in thematic neighborhood relationships in a two-dimensionalvisual display space, as further described below beginning withreference to FIG. 2.

The document mapper 32 operates on documents retrieved from a pluralityof local sources. The local sources include documents 17 maintained in astorage device 16 coupled to a local server 15 and documents 20maintained in a storage device 19 coupled to a local client 18. Thelocal server 15 and local client 18 are interconnected to the productionsystem 11 over an intranetwork 21. In addition, the document mapper 32can identify and retrieve documents from remote sources over aninternetwork 22, including the Internet, through a gateway 23 interfacedto the intranetwork 21. The remote sources include documents 26maintained in a storage device 25 coupled to a remote server 24 anddocuments 29 maintained in a storage device 28 coupled to a remoteclient 27.

The individual documents 17, 20, 26, 29 include all forms and types ofstructured and unstructured data, including electronic message stores,such as word processing documents, electronic mail (email) folders, Webpages, and graphical or multimedia data. Notwithstanding, the documentscould be in the form of organized data, such as stored in a spreadsheetor database.

In one embodiment, the individual documents 17, 20, 26, 29 includeelectronic message folders, such as maintained by the Outlook andOutlook Express products, licensed by Microsoft Corporation, Redmond,Wash. The database is an SQL-based relational database, such as theOracle database management system, release 8, licensed by OracleCorporation, Redwood Shores, Calif.

The individual computer systems, including backend server 11, productionserver 32, server 15, client 18, remote server 24 and remote client 27,are general purpose, programmed digital computing devices consisting ofa central processing unit (CPU), random access memory (RAM),non-volatile secondary storage, such as a hard drive or CD ROM drive,network interfaces, and peripheral devices, including user interfacingmeans, such as a keyboard and display. Program code, including softwareprograms, and data are loaded into the RAM for execution and processingby the CPU and results are generated for display, output, transmittal,or storage.

Display Generator

FIG. 2 is a block diagram 40 showing the system modules implementing thedisplay generator 34 of FIG. 1. The display generator 34 includesclustering 44, theme generator 41 and spine placement 42 components andmaintains attached storage 44 and database 46. Individual documents 14are analyzed by the clustering component 44 to form clusters 50 ofsemantically scored documents, such as described in commonly-assignedU.S. Pat. No. 7,610,313, issued Oct. 27, 2009, the disclosure of whichis incorporated by reference. In one embodiment, document concepts 47are formed from concepts and terms extracted from the documents 14 andthe frequencies of occurrences and reference counts of the concepts andterms are determined. Each concept and term is then scored based onfrequency, concept weight, structural weight, and corpus weight. Thedocument concept scores 48 are compressed and assigned to normalizedscore vectors for each of the documents 14. The similarities betweeneach of the normalized score vectors are determined, preferably ascosine values. A set of candidate seed documents is evaluated to selecta set of seed documents 49 as initial cluster centers based on relativesimilarity between the assigned normalized score vectors for each of thecandidate seed documents or using a dynamic threshold based on ananalysis of the similarities of the documents 14 from a center of eachcluster 15, such as described in commonly-assigned U.S. Pat. No.7,610,313, issued Oct. 27, 2009, the disclosure of which is incorporatedby reference. The remaining non-seed documents are evaluated against thecluster centers also based on relative similarity and are grouped intothe clusters 50 based on best-fit, subject to a minimum fit criterion.

The theme generator 41 evaluates the document concepts 47 assigned toeach of the clusters 50 and identifies cluster concepts 53 for eachcluster 50, as further described below with reference to FIG. 4.Briefly, the document concepts 47 for each cluster 50 are ranked intoranked cluster concepts 52 based on cumulative document concept scores51. The top-ranked document concepts 47 are designated as clusterconcepts 53. In the described embodiment, each cluster concept 53 mustalso be a document concept 47 appearing in the initial cluster center,be contained in a minimum of two documents 14 or at least 30% of thedocuments 14 in the cluster 50. Other cluster concept membershipcriteria are possible.

The cluster placement component 42 places spines and certain clusters 50into a two-dimensional display space as a visualization 43. The clusterplacement component 42 performs four principal functions. First, thecluster placement component 42 selects candidate spines 55, as furtherdescribed below with reference to FIG. 5. Briefly, the candidate spines55 are selected by surveying the cluster concepts 53 for each cluster50. Each cluster concept 53 shared by two or more clusters 50 canpotentially form a spine of clusters 50. However, those cluster concepts53 referenced by just a single cluster 50 or by more than 10% of theclusters 50 are discarded. The remaining clusters 50 are identified ascandidate spine concepts 54, which each logically form a candidate spine55.

Second, the cluster placement component 42 assigns each of the clusters50 to a best fit spine 56, as further described below with reference toFIG. 6. Briefly, the fit of each candidate spine 55 to a cluster 50 isdetermined by evaluating the candidate spine concept 54 to the clusterconcept 53. The candidate spine 545 exhibiting a maximum fit is selectedas the best fit spine 56 for the cluster 50.

Third, the cluster placement component 42 selects and places unique seedspines 58, as further described below with reference to FIG. 7. Briefly,spine concept score vectors 57 are generated for each best fit spine 56and evaluated. Those best fit spines 56 having an adequate number ofassigned clusters 50 and which are sufficiently dissimilar to anypreviously selected best fit spines 56 are designated and placed as seedspines 58.

The cluster placement component 42 places any remaining unplaced bestfit spines 56 and clusters 50 that lack best fit spines 56 into spinegroups, as further described below with reference to FIG. 8. Briefly,anchor clusters 60 are selected based on similarities between unplacedcandidate spines 55 and candidate anchor clusters. Cluster spines aregrown by placing the clusters 50 in similarity precedence to previouslyplaced spine clusters or anchor clusters along vectors originating ateach anchor cluster 60. As necessary, clusters 50 are placed outward orin a new vector at a different angle from new anchor clusters 55.Finally, the spine groups are placed within the visualization 43 bytranslating the spine groups until there is no overlap, such asdescribed in commonly-assigned U.S. Pat. No. 7,271,801, issued Sep. 18,2007, the disclosure of which is incorporated by reference.

Each module or component is a computer program, procedure or modulewritten as source code in a conventional programming language, such asthe C++ programming language, and is presented for execution by the CPUas object or byte code, as is known in the art. The variousimplementations of the source code and object and byte codes can be heldon a computer-readable storage medium or embodied on a transmissionmedium in a carrier wave. The display generator 32 operates inaccordance with a sequence of process steps, as further described belowwith reference to FIG. 3.

Method Overview

FIG. 3 is a flow diagram showing a method 100 for arranging conceptclusters 50 in thematic neighborhood relationships in a two-dimensionalvisual display space, in accordance with the present invention. Themethod 80 is described as a sequence of process operations or steps,which can be executed, for instance, by a display generator 32 (shown inFIG. 1).

As an initial step, documents 14 are scored and clusters 50 aregenerated (block 101), such as described in commonly-assigned U.S. Pat.No. 7,610,313, issued Oct. 27, 2009, the disclosure of which isincorporated by reference. Next, one or more cluster concepts 53 aregenerated for each cluster 50 based on cumulative cluster concept scores51 (block 102), as further described below with reference to FIG. 4. Thecluster concepts 53 are used to select candidate spines 55 (block 103),as further described below with reference to FIG. 5, and the clusters 50are then assigned to the candidate spines 55 as best fit spines 56(block 104), as further described below with reference to FIG. 6. Uniqueseed spines are identified from the best fit spines 56 and placed tocreate spine groups (block 105), as further described below withreference to FIG. 7. Any remaining unplaced best fit spines 56 andclusters 50 that lack best fit spines 56 are also identified and placed(block 106), as further described below with reference to FIG. 8.Finally, the spine groups are placed within the visualization 43 in thedisplay space. In the described embodiment, each of the spine groups isplaced so as to avoid overlap with other spine groups. In a furtherembodiment, the spine groups can be placed by similarity to other spinegroups. Other cluster, spine, and spine group placement methodologiescould also be applied based on similarity, dissimilarity, attraction,repulsion, and other properties in various combinations, as would beappreciated by one skilled in the art. The method then terminates.

Cluster Concept Generation

FIG. 4 is a flow diagram showing the routine 110 for generating clusterconcepts 53 for use in the method 100 of FIG. 3. One purpose of thisroutine is to identify the top ranked cluster concepts 53 that bestsummarizes the commonality of the documents in any given cluster 50based on cumulative document concept scores 51.

A cluster concept 53 is identified by iteratively processing througheach of the clusters 50 (blocks 111-118). During each iteration, thecumulative score 51 of each of the document concepts 47 for all of thedocuments 14 appearing in a cluster 50 are determined (block 112). Thecumulative score 51 can be calculated by summing over the documentconcept scores 48 for each cluster 50. The document concepts 47 are thenranked by cumulative score 51 as ranked cluster concepts 52 (block 113).In the described embodiment, the ranked cluster concepts 52 appear indescending order, but could alternatively be in ascending order. Next, acluster concept 53 is determined. The cluster concept 53 can be userprovided (block 114). Alternatively, each ranked cluster concept 52 canbe evaluated against an acceptance criteria (blocks 115 and 116) toselect a cluster concept 53. In the described embodiment, clusterconcepts 53 must meet the following criteria:

-   -   (1) be contained in the initial cluster center (block 115); and    -   (2) be contained in a minimum of two documents 14 or 30% of the        documents 14 in the cluster 50, whichever is greater (block        116).        The first criteria restricts acceptable ranked cluster concepts        52 to only those document concepts 47 that appear in a seed        cluster center theme of a cluster 50 and, by implication, are        sufficiently relevant based on their score vectors. Generally, a        cluster seed theme corresponds to the set of concepts appearing        in a seed document 49, but a cluster seed theme can also be        specified by a user or by using a dynamic threshold based on an        analysis of the similarities of the documents 14 from a center        of each cluster 50, such as described in commonly-assigned U.S.        Pat. No. 7,610,313, issued Oct. 27, 2009, the disclosure of        which is incorporated by reference The second criteria filters        out those document concepts 47 that are highly scored, yet not        popular. Other criteria and thresholds for determining        acceptable ranked cluster concepts 52 are possible.

If acceptable (blocks 115 and 116), the ranked cluster concept 52 isselected as a cluster concept 53 (block 117) and processing continueswith the next cluster (block 118), after which the routine returns.

Candidate Spine Selection

FIG. 5 is a flow diagram showing the routine 120 for selecting candidatespines 55 for use in the method 100 of FIG. 3. One purpose of thisroutine is to identify candidate spines 55 from the set of all potentialspines 55.

Each cluster concept 53 shared by two or more clusters 50 canpotentially form a spine of clusters 50. Thus, each cluster concept 53is iteratively processed (blocks 121-126). During each iteration, eachpotential spine is evaluated against an acceptance criteria (blocks122-123). In the described embodiment, a potential spine cannot bereferenced by only a single cluster 50 (block 122) or by more than 10%of the clusters 50 in the potential spine (block 123). Other criteriaand thresholds for determining acceptable cluster concepts 53 arepossible. If acceptable (blocks 122, 123), the cluster concept 53 isselected as a candidate spine concept 54 (block 124) and a candidatespine 55 is logically formed (block 125). Processing continues with thenext cluster (block 126), after which the routine returns.

Cluster to Spine Assignment

FIG. 6 is a flow diagram showing the routine 130 for assigning clusters50 to candidate spines 55 for use in the method 100 of FIG. 3. Onepurpose of this routine is to match each cluster 50 to a candidate spine55 as a best fit spine 56.

The best fit spines 56 are evaluated by iteratively processing througheach cluster 50 and candidate spine 55 (blocks 131-136 and 132-134,respectively). During each iteration for a given cluster 50 (block 131),the spine fit of a cluster concept 53 to a candidate spine concept 54 isdetermined (block 133) for a given candidate spine 55 (block 132). Inthe described embodiment, the spine fit F is calculated according to thefollowing equation:F=log(popularity/rank²)×scalewhere popularity is defined as the number of clusters 50 containing thecandidate spine concept 54 as a cluster concept 53, rank is defined asthe rank of the candidate spine concept 54 for the cluster 50, and scaleis defined as a bias factor for favoring a user specified concept orother predefined or dynamically specified characteristic. In thedescribed embodiment, a scale of 1.0 is used for candidate spine concept54 while a scale of 5.0 is used for user specified concepts. Processingcontinues with the next candidate spine 55 (block 134). Next, thecluster 50 is assigned to the candidate spine 55 having a maximum spinefit as a best fit spine 56 (block 135). Processing continues with thenext cluster 50 (block 136). Finally, any best fit spine 56 thatattracts only a single cluster 50 is discarded (block 137) by assigningthe cluster 50 to a next best fit spine 56 (block 138). The routinereturns.Generate Unique Spine Group Seeds

FIG. 7 is a flow diagram showing the routine 140 for placing unique seedspines for use in the method 100 of FIG. 3. One purpose of this routineidentify and place best fit spines 56 into the visualization 43 asunique seed spines 58 for use as anchors for subsequent candidate spines55.

Candidate unique seed spines are selected by first iterativelyprocessing through each best fit spine 56 (blocks 141-144). During eachiteration, a spine concept score vector 57 is generated for only thosespine concepts corresponding to each best fit spine 56 (block 142). Thespine concept score vector 57 aggregates the cumulative cluster conceptscores 51 for each of the clusters 50 in the best fit spine 56. Eachspine concept score in the spine concept score vector 57 is normalized,such as by dividing the spine concept score by the length of the spineconcept score vector 57 (block 143). Processing continues for eachremaining best fit spine 56 (block 144), after which the best fit spines56 are ordered by number of clusters 50. Each best fit spine 56 is againiteratively processed (blocks 146-151). During each iteration, best fitspines 56 that are not sufficiently large are discarded (block 147). Inthe described embodiment, a sufficiently large best fit spine 56contains at least five clusters 50. Next, the similarities of the bestfit spine 56 to each previously-selected unique seed spine 58 iscalculated and compared (block 148). In the described embodiment, bestfit spine similarity is calculated as the cosine of the spine conceptscore vectors 59, which contains the cumulative cluster concept scores51 for the cluster concepts 53 of each cluster 50 in the best fit spine56 or previously-selected unique seed spine 58. Best fit spines 56 thatare not sufficiently dissimilar are discarded (block 149). Otherwise,the best fit spine 56 is identified as a unique seed spine 58 and isplaced in the visualization 43 (block 150). Processing continues withthe next best fit spine 56 (block 151), after which the routine returns.

Remaining Spine Placement

FIG. 8 is a flow diagram showing the routine 160 for placing remainingcandidate spines 55 for use in the method 100 of FIG. 3. One purpose ofthis routine identify and place any remaining unplaced best fit spines56 and clusters 50 that lack best fit spines 56 into the visualization43.

First, any remaining unplaced best fit spines 56 are ordered by numberof clusters 50 assigned (block 161). The unplaced best fit spine 56 areiteratively processed (blocks 162-175) against each of thepreviously-placed spines (blocks 163-174). During each iteration, ananchor cluster 60 is selected from the previously placed spine 58 (block164), as further described below with reference to FIG. 9. The cluster50 contained in the best fit spine 56 that is most similar to theselected anchor cluster 60 is then selected (block 165). In thedescribed embodiment, cluster similarity is calculated as cosine valueof the cumulative cluster concept vectors 51, although otherdeterminations of cluster similarity are possible, including minimum,maximum, and median similarity bounds. The spine clusters 50 are graftedonto the previously placed spine along a vector defined from the centerof the anchor cluster 55 (block 166), as further described below withreference to FIG. 12. If any of the spine clusters are not placed (block167), another anchor cluster 60 is selected (block 168), as furtherdescribed below with reference to FIG. 9. Assuming another anchorcluster 60 is selected (block 169), the spine clusters are again placed(block 166), as further described below with reference to FIG. 12.Otherwise, if another anchor cluster 60 is not selected (block 169), thecluster 50 is placed in a related area (block 170). In one embodiment,unanchored best fit spines 56 become additional spine group seeds. In afurther embodiment, unanchored best fit spines 56 can be placed adjacentto the best fit anchor cluster 60 or in a display area of thevisualization 43 separately from the placed best fit spines 56.

If the cluster 50 is placed (block 167), the best fit spine 56 islabeled as containing candidate anchor clusters 60 (block 171). If thecurrent vector forms a maximum line segment (block 172), the angle ofthe vector is changed (block 173). In the described embodiment, amaximum line segment contains more than 25 clusters 50, although anyother limit could also be applied. Processing continues with each seedspine (block 174) and remaining unplaced best fit spine 56 (block 175).Finally, any remaining unplaced clusters 50 are placed (block 176). Inone embodiment, unplaced clusters 50 can be placed adjacent to a bestfit anchor cluster 60 or in a display area of the visualization 43separately from the placed best fit spines 56. The routine then returns.

Anchor Cluster Selection

FIG. 9 is a flow diagram showing the function 180 for selecting ananchor cluster 60 for use in the routine 160 of FIG. 8. One purpose ofthis routine is to return a set of anchor clusters 60, which contain thespine concept and which are ordered by similarity to the largest cluster50 in the spine.

Each candidate anchor cluster 60 is iteratively processed (blocks181-183) to determine the similarity between a given cluster 50 and eachcandidate anchor cluster 60 (block 182). In one embodiment, each clustersimilarity is calculated as cosine value concept vectors, although otherdeterminations of cluster similarity are possible, including minimum,maximum, and median similarity bounds. The most similar candidate anchorcluster 60 is identified (block 184) and, if found, chosen as the anchorcluster 60 (block 187), such as described in commonly-assigned U.S. Pat.No. 7,271,801, issued Sep. 18, 2007, the disclosure of which isincorporated by reference. Otherwise, if not found (block 185), thelargest cluster 50 assigned to the unique seed spine 58 is chosen as theanchor cluster 60 (block 186). The function then returns set of theanchor clusters 60 and the unique seed spine 58 becomes a seed for a newspine group (block 188).

Cluster Spine Example

FIG. 10 is a data representation diagram 200 showing, by way of example,a view of a cluster spine 202. Clusters are placed in a cluster spine202 along a vector 203, preferably defined from center of an anchorcluster. Each cluster in the cluster spine 202, such as endpointclusters 204 and 206 and midpoint clusters 205, group documents 207sharing a popular concept, that is, assigned to a best-fit concept 53.The cluster spine 202 is placed into a visual display area 201 togenerate a two-dimensional spatial arrangement. To represent datainter-relatedness, the clusters 204-206 in each cluster spine 202 areplaced along a vector 203 arranged in order of cluster similarity,although other line shapes and cluster orderings can be used.

The cluster spine 202 visually associates those clusters 204-206 sharinga common popular concept. A theme combines two or more concepts. Duringcluster spine creation, those clusters 204-206 having available anchorpoints are identified for use in grafting other cluster spines sharingpopular thematically-related concepts, as further described below withreference to FIGS. 11A-C.

Anchor Points Example

FIGS. 11A-C are data representation diagrams 210, 220, 230 showinganchor points within cluster spines. A placed cluster having at leastone open edge constitutes a candidate anchor point 54. Referring firstto FIG. 11A, a starting endpoint cluster 212 of a cluster spine 211functions as an anchor point along each open edge 215 a-e at primary andsecondary angles.

An open edge is a point along the edge of a cluster at which anothercluster can be adjacently placed. In the described embodiment, clustersare placed with a slight gap between each cluster to avoid overlappingclusters. Otherwise, a slight overlap within 10% with other clusters isallowed. An open edge is formed by projecting vectors 214 a-e outwardfrom the center 213 of the endpoint cluster 212, preferably atnormalized angles. The clusters in the cluster spine 211 are arranged inorder of cluster similarity.

In one embodiment, given 0≦σ<Π, where σ is the angle of the currentcluster spine 211, the normalized angles for largest endpoint clustersare at one third Π to minimize interference with other spines whilemaximizing the degree of interrelatedness between spines. If the clusterordinal spine position is even, the primary angle is

$\sigma + \frac{\Pi}{3}$and the secondary angle is

$\sigma - {\frac{\Pi}{3}.}$Otherwise, the primary angle is

$\sigma - \frac{\Pi}{3}$and the secondary angle is

$\sigma + {\frac{\Pi}{3}.}$Other evenly divisible angles could be also used.

Referring next to FIG. 11B, the last endpoint cluster 222 of a clusterspine 221 also functions as an anchor point along each open edge. Theendpoint cluster 222 contains the fewest number of concepts. Theclusters in the cluster spine 221 are arranged in order of similarity tothe last placed cluster. An open edge is formed by projecting vectors224 a-c outward from the center 223 of the endpoint cluster 222,preferably at normalized angles.

In one embodiment, given 0≦σ<Π, where σ is the angle of the currentcluster spine 221, the normalized angles for smallest endpoint clustersare at one third Π, but only three open edges are available to graftother thematically-related cluster spines. If the cluster ordinal spineposition is even, the primary angle is

$\sigma + \frac{\Pi}{3}$and the secondary angle is

$\sigma - {\frac{\Pi}{3}.}$Otherwise, the primary angle is

$\sigma - \frac{\Pi}{3}$and the secondary angle is

$\sigma + {\frac{\Pi}{3}.}$Other evenly divisible angles could be also used.

Referring finally to FIG. 11C, a midpoint cluster 237 of a cluster spine231 functions as an anchor point for a cluster spine 236 along each openedge. The midpoint cluster 237 is located intermediate to the clustersin the cluster spine 236 and defines an anchor point along each openedge. An open edge is formed by projecting vectors 239 a-b outward fromthe center 238 of the midpoint cluster 237, preferably at normalizedangles. Unlike endpoint clusters 52, 232 the midpoint cluster 237 canonly serve as an anchor point along tangential vectors non-coincident tothe vector forming the cluster spine 236. Accordingly, endpoint clusters212, 222 include one additional open edge serving as a coincident anchorpoint.

In one embodiment, given 0≦σ<Π, where σ is the angle of the currentcluster spine 231, the normalized angles for midpoint clusters are atone third Π, but only two open edges are available to graft otherthematically-related cluster spines. Empirically, limiting the number ofavailable open edges to those facing the direction of cluster similarityhelps to maximize the interrelatedness of the overall display space.

Grafting a Spine Cluster onto a Spine

FIG. 12 is a flow diagram showing the function 240 for grafting a spinecluster 50 onto a spine for use in the routine 160 of FIG. 8. Onepurpose of this routine is to attempt to place a cluster 50 at an anchorpoint in a cluster spine either along or near an existing vector, ifpossible, as further described below with reference to FIG. 13.

An angle for placing the cluster 50 is determined (block 241), dependentupon whether the cluster against which the current cluster 50 is beingplaced is a starting endpoint, midpoint, or last endpoint cluster, asdescribed above with reference to FIGS. 11A-C. If the cluster ordinalspine position is even, the primary angle is

$\sigma + \frac{\Pi}{3}$and the secondary angle is

$\sigma - {\frac{\Pi}{3}.}$Otherwise, the primary angle is

$\sigma - \frac{\Pi}{3}$and the secondary angle is

$\sigma + {\frac{\Pi}{3}.}$Other evenly divisible angles could be also used. The cluster 50 is thenplaced using the primary angle (block 242). If the cluster 50 is thefirst cluster in a cluster spine but cannot be placed using the primaryangle (block 243), the secondary angle is used and the cluster 50 isplaced (block 244). Otherwise, if the cluster 50 is placed but overlapsmore than 10% with existing clusters (block 245), the cluster 50 ismoved outward (block 246) by the diameter of the cluster 50. Finally, ifthe cluster 50 is satisfactorily placed (block 247), the functionreturns an indication that the cluster 50 was placed (block 248).Otherwise, the function returns an indication that the cluster was notplaced (block 249).Cluster Placement Relative to an Anchor Point Example

FIG. 13 is a data representation diagram showing, by way of example,cluster placement relative to an anchor point. Anchor points 266, 267are formed along an open edge at the intersection of a vector 263 a, 263b, respectively, drawn from the center 262 of the cluster 261. Thevectors are preferably drawn at a normalized angle, such as

$\frac{\Pi}{3}$

in one embodiment, relative to the vector 268 forming the cluster spine268.

Completed Cluster Placement Example

FIG. 14 is a data representation diagram 270 showing, by way of example,a completed cluster placement. The clusters 272, 274, 276, 278 placed ineach of the cluster spines 271, 273, 275, 277 are respectively matchedto popular concepts, that is, best-fit concepts 53. Slight overlap 279between grafted clusters is allowed. In one embodiment, no more than 10%of a cluster can be covered by overlap. The singleton clusters 280,however, do not thematically relate to the placed clusters 272, 274,276, 278 in cluster spines 271, 273, 275, 277 and are therefore groupedas individual clusters in non-relational placements.

Display Generator

FIG. 15 is a block diagram 300 showing the system modules implementingthe display generator 34 of FIG. 1, in accordance with a furtherembodiment. The display generator 34 includes the clustering 44 andtheme generator 41 components and maintains the attached storage 44 andthe database 46, as further described above with reference to FIG. 2. Inaddition, the display generator 34 includes spine placement 301 andspine group placement 302 components that respectively place best fitcluster spines 56 and singleton clusters 50 into spine groups 303 andplaces the spine groups 303 into a two-dimensional display space as avisualization 43.

Briefly, the cluster placement component 301 performs five principalfunctions. First, the cluster placement component 42 selects candidatespines 55, as further described above with reference to FIG. 5. Briefly,the candidate spines 55 are selected by surveying the cluster concepts53 for each cluster 50. Each cluster concept 53 shared by two or moreclusters 50 can potentially form a spine of clusters 50. However, thosecluster concepts 53 referenced by just a single cluster 50 or by morethan 10% of the clusters 50 are discarded. The remaining clusters 50 areidentified as candidate spine concepts 54, which each logically form acandidate spine 55.

Second, the cluster placement component 42 assigns each of the clusters50 to a best fit spine 56, as further described above with reference toFIG. 6. Briefly, the fit of each candidate spine 55 to a cluster 50 isdetermined by evaluating the candidate spine concept 54 to the clusterconcept 53. The candidate spine 545 exhibiting a maximum fit is selectedas the best fit spine 56 for the cluster 50.

Third, the cluster placement component 42 selects and places unique seedspines 58, as further described above with reference to FIG. 7. Briefly,the best fit spines 56 are first ordered based on spine length using,for instance, the number of clusters 50 contained in the spine. Thus,longer best fit spines are selected first. Spine concept score vectors57 are then generated for each best fit spine 56 and evaluated. Thosebest fit spines 56 having an adequate number of assigned clusters 50 andwhich are sufficiently dissimilar to any previously selected best fitspines 56 are designated and placed as seed spines 58.

Fourth, the cluster placement component 42 places any remaining unplacedbest fit spines 56 are placed into spine groups 303, as furtherdescribed below with reference to FIG. 18. Briefly, a list of anchorcluster candidates 60 is built by identifying those placed best fitspines 56 that contain a potential anchor cluster containing the themeof the unplaced best fit spine 56, have at least one open edge forgrafting a spine, and which have at least a minimum similarity. In thedescribed embodiment, spine similarity is determined by evaluating thecosine values of group concept score vectors 304 for the unplaced andplaced best fit spines 56 and a minimum similarity of 0.10 is required,although other similarity values are possible. Spine groups 303 areformed by placing the unplaced best fit spines 56 at an anchor cluster60 on the previously placed best fit spine 56 having the most similarityalong a vector originating at the anchor cluster 60. As necessary, bestfit spines 56 are placed outward or in a new vector at a different anglefrom new anchor clusters 60.

Finally, any remaining singleton clusters 50 are placed into spinegroups 303, as further described below with reference to FIG. 19.Briefly, a list of candidate anchor clusters 60 is built by identifyingthose placed best fit spines 56 that have at least one open edge forgrafting a spine. Placement is based on a weaker connection and isrepresented by the proximity of the singleton cluster 50 to a placedbest fit spine 56, as further described below with reference to FIG. 19.Thus, if possible, the remaining singleton clusters 50 are placed nearan anchor cluster 60 having the most similarity.

The cluster spine group placement component 302 places the spine groups303 within the visualization 43, as further described below withreference to FIG. 20. Briefly, the spine groups 303 are arrangedcircumferentially to a central shape defined logically within thevisualization 43. In the described embodiment, a circle is definedwithin the visualization 43 and the spine groups 303 are placed radiallywithin equally-sized sectors specified along the circumference of thecircle, as further described below with reference to FIG. 21. Asnecessary, the spine groups 303 are placed outward to avoid overlap.

Method Overview

FIG. 16 is a flow diagram showing a method 310 for arranging conceptclusters in thematic neighborhood relationships in a shapedtwo-dimensional visual display space 43, in accordance with a furtherembodiment. The method 310 is described as a sequence of processoperations or steps, which can be executed, for instance, by a displaygenerator 32 (shown in FIG. 1).

As an initial step, documents 14 are scored and clusters 50 aregenerated (block 311), such as described in commonly-assigned U.S. Pat.No. 7,610,313, issued Oct. 27, 2009, the disclosure of which isincorporated by reference. Next, one or more cluster concepts 53, thatis, “themes,” are generated for each cluster 50 based on cumulativecluster concept scores 51 (block 312), as further described above withreference to FIG. 4. The cluster concepts 53 are used to selectcandidate spines 55 (block 313), as further described above withreference to FIG. 5, and the clusters 50 are then assigned to thecandidate spines 55 as best fit spines 56 (block 314), as furtherdescribed above with reference to FIG. 6.

Spine groups 303 are then formed and placed within the visualization 43in the display space, as follows. First, the best fit spines 56 areordered based on spine length using, for instance, the number ofclusters 50 contained in the spine (block 315). Thus, longer best fitspines 56 are selected first. Other orderings of the best fit spines 56are possible. Unique seed spines are identified from the ordered bestfit spines 56 and placed to create best fit spines (block 316), asfurther described above with reference to FIG. 7. Any remaining unplacednon-seed best fit spines 56 are identified and placed with the placedseed best fit spines 56 (block 317), as further described below withreference to FIG. 18. Similarly, any remaining unplaced singletonclusters 50 are identified and placed as loose “grafts” to the placedbest fit spines 56 (block 317), as further described below withreference to FIG. 19. Finally, the spine groups 303, which include theplaced best fit spines 56 and the loosely grafted singleton clusters 50,are placed within the visualization 43 (block 319), as further describedbelow with reference to FIG. 21. In the described embodiment, each ofthe spine groups is placed in a radial layout circumferential to alogically defined circle so as to avoid overlap with other spine groups.The radial layout facilitates improved user interface features throughincreased cluster spine group density and provides a cluster spine groupplacement allowing improved descriptive labeling. Other cluster, spine,and spine group placement methodologies could also be applied based onsimilarity, dissimilarity, attraction, repulsion, and other propertiesin various combinations, as would be appreciated by one skilled in theart. The method then terminates.

Cluster Assignment

FIG. 17 is a flow diagram showing the routine 320 for assigning clusters50 to best fit candidate spines 56 for use in the method 310 of FIG. 16.One purpose of this routine is to match each cluster 50 to a best fitcandidate spine 56.

The best fit spines 56 are evaluated by iteratively processing througheach cluster 50 and candidate spine 55 (blocks 321-326 and 322-324,respectively). During each iteration for a given cluster 50 (block 321),the spine fit of a cluster concept 53 to a candidate spine concept 54 isdetermined (block 323) for a given candidate spine 55 (block 322). Inthe described embodiment, the spine fit F is calculated according to thefollowing equation:

$F = {{\log\left( \frac{v}{r^{2}} \right)} \times w}$where v is defined as the number of clusters 50 containing the candidatespine concept 54 as a cluster concept 53, v is defined as the rank orderof the cluster concept 53, and w is defined as bias factor. In thedescribed embodiment, a bias factor of 5.0 is used for user-specifiedconcepts, while a bias factor of 1.0 is used for all other concepts.Processing continues with the next candidate spine 55 (block 324). Next,the cluster 50 is assigned to the candidate spine 55 having a maximumspine fit as a best fit spine 56 (block 325). Processing continues withthe next cluster 50 (block 326). Finally, any best fit spine 56 thatattracts only a single cluster 50 is discarded (block 327) by assigningthe cluster 50 to a next best fit spine 56 (block 328). The routinereturns.

In a further embodiment, each cluster 50 can be matched to a best fitcandidate spine 56 as further described above with reference to FIG. 6.

Remaining Cluster Spine Placement

FIG. 18 is a flow diagram showing the routine 330 for placing remainingcluster spines 56 for use in the method 310 of FIG. 16. The remainingcluster spines 56 are those cluster spines that are non-seed best fitspines 56. The purpose of the routine is to graft each remaining clusterspine 56 onto an already-placed seed best fit spine 56 having theclosest similarity with a connecting line drawn in the visualization 43to indicate relatedness.

Each of the remaining unplaced cluster spines 56 is iterativelyprocessed (blocks 331-349), as follows. For each unplaced cluster spine56 (block 331), a list of candidate anchor clusters 60 is first builtfrom the set of placed seed best fit spines 56 (block 332). In thedescribed embodiment, a candidate anchor cluster 60 has been placed in abest fit spine 56, has at least one open edge for grafting a clusterspine 56, and belongs to a best fit spine 56 that has a minimumsimilarity of 0.1 with the unplaced cluster spine 56, although otherminimum similarity values are possible. The similarities between theunplaced cluster spine 56 and the best fit spine of each candidateanchor cluster 60 in the list are determined (block 333). Thesimilarities can be determined by taking cosine values over a set ofgroup concept score vector 304 formed by aggregating the concept scoresfor all clusters 56 in the unplaced cluster spine 56 and in the best fitspine of each candidate anchor cluster 60 in the list. Strong candidateanchor clusters 60, which contain the same concept as the unplacedcluster spine 56, are identified (block 334). If no qualified placedanchor clusters 60 are found (block 335), weak candidate anchor clusters60, which, like the strong candidate anchor clusters 60, are placed,have an open edge, and reflect the minimum best fit spine similarity,are identified (block 336).

Next, the unplaced cluster spine 56 is placed. During spine placement(blocks 338-348), the strong candidate anchor clusters 60 are selectedbefore the weak candidate anchor clusters 60. The best fit spine 56having a maximum similarity to the unplaced cluster spine 56 isidentified (block 337). If a suitable best fit spine 56 is not found(block 338), the largest cluster 60 on the unplaced cluster spine 56 isselected and the unplaced cluster spine 56 becomes a new spine group 303(block 339). Otherwise, if a best fit spine 56 is found (block 338), thecluster 60 on the unplaced cluster spine 56 that is most similar to theselected anchor cluster 60 is selected (block 340). The unplaced clusterspine 56 is placed by grafting onto the previously placed best fit spine56 along a vector defined from the center of the anchor cluster 55(block 341), as further described above with reference to FIG. 12. Ifany of the spine clusters are not placed (block 342), the best fit spine56 having the next closest similarity to the unplaced cluster spine 56is identified and the cluster on the unplaced cluster spine 56 that ismost similar to the selected anchor cluster 60 is selected (block 343),as further described above with reference to FIG. 9. Assuming anotheranchor cluster 60 is selected (block 344), the unplaced cluster spine 56is again placed (block 341), as further described above with referenceto FIG. 12. Otherwise, if another anchor cluster 60 is not selected(block 344), the largest cluster 60 on the unplaced cluster spine 56 isselected and the unplaced cluster spine 56 becomes a new spine group 303(block 345).

If the unplaced cluster spine 56 is placed (block 342), the now-placedbest fit spine 56 is labeled as containing candidate anchor clusters 60(block 346). If the current vector forms a maximum line segment (block347), the angle of the vector is changed (block 348). In the describedembodiment, a maximum line segment contains more than 25 clusters 50,although any other limit could also be applied. Processing continueswith each remaining unplaced best fit spine 56 (block 349), after whichthe routine then returns.

Remaining Cluster Placement

FIG. 19 is a flow diagram showing the routine 350 for placing remainingclusters 50 for use in the method 310 of FIG. 16. The remaining clusters60 are those clusters that failed to share a sufficient similarity witha best fit spine 56. The purpose of the routine is to loosely graft eachremaining cluster 60 in close proximity to an already-placed seed bestfit spine 56 in a spine group 303. The placement is based on a weakerconnection to the selected best fit spine 56 by proximity alone with noconnecting line drawn in the visualization 43 to indicate relatedness.

Each of the remaining unplaced clusters 60 is iteratively processed(blocks 351-358), as follows. For each unplaced cluster 60, a list ofcandidate anchor clusters 60 is first built from the set of placed seedbest fit spines 56 (block 352). In the described embodiment, a candidateanchor cluster 60 has at least one open edge for grafting a cluster 60.The similarities between the unplaced cluster 60 and each candidateanchor cluster 60 in the list are determined (block 353). Thesimilarities can be determined by taking cosine values of the respectiveclusters 60. The candidate anchor cluster 60 having the closestsimilarity to the unplaced cluster 60 is identified (block 354). If asufficiently similar candidate anchor cluster 60 found (block 355), theunplaced cluster 60 is placed in proximity to the selected candidateanchor cluster 60 (block 356). Otherwise, the unplaced cluster 60 areplaced in a display area of the visualization 43 separately from theplaced best fit spines 56 (block 357). Processing continues with eachremaining unplaced cluster 60 (block 358), after which the routine thenreturns.

Example Cluster Spine Group

FIG. 20 is a data representation diagram showing, by way of example, acluster spine group 370. A set of individual best fit spines 371, 373,376, 379 are created by assigning clusters 50 sharing a common best fittheme. The best fit spines are ordered based on spine length and thelongest best fit spine 371 is selected as an initial unique seed spine.Each of the unplaced remaining best fit spines 373, 376, 379 are graftedonto the placed best fit spine 371 by first building a candidate anchorcluster list. If possible, each remaining best fit spine 376, 379 isplaced at an anchor cluster 378, 381 on the best fit spine that is themost similar to the unplaced best fit spine. The best fit spines 371,376, 379 are placed along a vector 372, 377, 379 with a connecting linedrawn in the visualization 43 to indicate relatedness. Otherwise, eachremaining best fit spine 373 is placed at a weak anchor 375 with aconnecting line 374 drawn in the visualization 43 to indicaterelatedness. However, the connecting line 374 does not connect to theweak anchor 375. Relatedness is indicated by proximity only.

Next, each of the unplaced remaining singleton clusters 382 are looselygrafted onto a placed best fit spine 371, 376, 379 by first building acandidate anchor cluster list. Each of the remaining singleton clusters382 are placed proximal to an anchor cluster 60 that is most similar tothe singleton cluster. The singleton clusters 373, 382 are placed alonga vector 372, 377, 379, but no connecting line is drawn in thevisualization 43. Relatedness is indicated by proximity only.

Cluster Spine Group Placement

FIG. 21 is a flow diagram showing the routine 380 for placing spinegroups 303 for use in the method 310 of FIG. 16. Spine groups 303include the placed best fit spines 56 with grafted best fit spines 56and loosely grafted singleton clusters 50. The purpose of this routineis to place the spine groups 303 within a radial layout defined withinthe visualization 43 in the display space in semantically meaningfulorder.

The spine groups 303 are first sorted by order of importance (block381). In the described embodiment, the spine groups 303 are sorted bysize and concept emphasized state, which corresponds to specificuser-specified selections. The spine groups 303 are arrangedcircumferentially to a central shape defined logically within thevisualization 43. In the described embodiment, a circle is definedwithin the visualization 43. Referring to FIG. 22, a data representationdiagram shows, by way of example, a radially-oriented layout 400. Thespine groups 303 are placed within a set of three concentric circles. Aninnermost circle 401 with radius 402 contains four distinct seed spinegroups 303 placed along a central vector 403 evenly spaced withinquarter circle sectors 405, although other numbers of seed spine groups303 are possible. Within each sector 405, each of the four spine groups303 are rotated to an initial target angle 404 along the central vector403. Remaining spine groups 303 are placed within the sector 405 up to amaximum angle 406 a or minimum angle 406 b relative to the initialtarget angle 404. The spine groups 303 are moved outwards away from thecenter of the circle as necessary to avoid overlap, as further describedbelow with reference to FIG. 24. The majority of the spine groups 303fall within a primary circle logically defined outside the innermostcircle 401. A third outermost circle can be used by a user interface todelineate an area for descriptive label placement.

Referring back to FIG. 21, the radius of the innermost circle 401 iscalculated (block 382). In the described embodiment, the radius r iscalculated in accordance to equation (1):

$\begin{matrix}{r = {\frac{{Seeds} \times {Max}\; Y}{2} \cdot \pi}} & (1)\end{matrix}$where Seeds is a number of initial seed spine groups 303 to be placedcircumferentially to the innermost circle 401 and MaxY is a maximumextent along a y-axis of the placed best fit candidate spine groups 303.A group concept score vector 304 is generated (block 383) by aggregatingthe cluster theme concepts for each spine group 303. In the describedembodiment, the group concept score vector 304 is limited to the top 50concepts based on score, although other limits could also be used. Theset of unique seed spine groups 303 are selected and placed at equaldistance angles about the innermost circle 401 (block 384). The uniqueseed spine groups 303 are chosen such that each unique seed spine group303 is sufficiently dissimilar to the previously-placed unique seedspine groups 303. In the described embodiment, a cosine value of atleast 0.2 is used, although other metrics of cluster spine groupdissimilarity are possible. Each of the unique seed spine groups 303 aretranslated to the x-axes, where x=0.5×radius r and y=0.0, and arefurther rotated or moved outwards away from the innermost circle 401 toavoid overlap.

Each of the remaining spine groups 303 are iteratively processed (blocks385-393), as follows. The similarities of each unplaced spine group 303to each previously-placed spine group 303 are determined (block 386) andthe seed spine group 303 that is most similar to the unplaced spinegroup 303 is selected (block 387). The unplaced spine group 303 isplaced at the radius 402 of the innermost circle 401 at the angle 404 ofthe selected seed spine group 303 (block 388). If the unplaced spinegroup 303 overlaps any placed spine group 303 (block 389), the unplacedspine group 303 is rotated (block 390). However, if the unplaced spinegroup 303 exceeds the maximum angle 406 a or minimum angle 406 b afterrotation (block 391), the unplaced spine group 303 is translatedoutwards and rotated in an opposite direction until the overlap isremoved (block 392). Referring to FIG. 24, a data representation diagram420 shows, by way of example, cluster spine group overlap removal. Anoverlapping cluster spine group 303 is first rotated in an anticlockwisedirection 421 up to the maximum angle 406 a and, if still overlapping,translated in an outwards direction 422. Rotation 423 and outwardtranslation 424 are repeated until the overlap is resolved. Referringback to FIG. 21, processing continues with each remaining unplaced spinegroup 303 (block 393), after which the routine then returns.

Cluster Spine Group Placement Example

FIGS. 23A-C are data representation diagrams showing, by way ofexamples, cluster spine group placements 410. Referring first to FIG.23A, an initial set of seed cluster spine groups 412-415 are shownevenly spaced circumferentially to an innermost circle 411. No clusters60 assigned to each seed cluster spine group overlap the sector 405 inwhich the corresponding seed cluster spine group is placed. Referringnext to FIG. 23B, an unplaced cluster spine group 416 overlapsalready-placed cluster spine group 412. Rotating the unplaced clusterspine group 416 further is not possible, since the one or more of theclusters would cross over into the next sector 405. Referring finally toFIG. 23C, the entire set of cluster spine groups 412, 416 are translatedoutwards from the innermost circle 411 until no longer overlapping.

While the invention has been particularly shown and described asreferenced to the embodiments thereof, those skilled in the art willunderstand that the foregoing and other changes in form and detail maybe made therein without departing from the spirit and scope of theinvention.

What is claimed is:
 1. A method for placing spine groups within a display, comprising the steps of: defining a shape within a display; placing groups of cluster spines circumferentially around the defined shape; identifying overlap between at least two of the spine groups; rotating one of the overlapping spine groups in one of a clockwise and anticlockwise direction away from the other overlapping spine group; determining that overlap exists between the rotated spine group and at least one of the other overlapping spine group and another placed spine group; and moving the rotated overlapping spine group in an outward direction away from the shape, wherein the steps are performed using a suitably-programmed computer.
 2. A method according to claim 1, further comprising: generating one such spine group, comprising: identifying unique cluster spines from a set of cluster spines; selecting an anchor cluster on one of the unique cluster spines; selecting a cluster from one of the remaining cluster spines in the set that is most similar to the anchor cluster; and grafting the cluster of the remaining cluster spine to the anchor cluster of the unique cluster spine as the spine group.
 3. A method according to claim 2, further comprising: determining that the spine groups are unique when each of the spine groups is sufficiently dissimilar to one another.
 4. A method according to claim 3, further comprising: calculating a similarity between each of the spine groups.
 5. A method according to claim 4, further comprising: identifying the spine groups as unique when the similarity satisfies a cosine value of at least 0.2.
 6. A method according to claim 1, further comprising: calculating a radius of the defined shape; and positioning the spine groups at equal distances around the defined shape based on the radius.
 7. A method according to claim 6, wherein the radius is calculated according to the following equation: $r = {\frac{{Seeds} \times {Max}\; Y}{2} \cdot \pi}$ wherein Seeds is a number of the spine groups to be displayed at equal distances and MaxY is a maximum extent along a y-axis of the spine groups.
 8. A method according to claim 1, further comprising: placing further spine groups into the display, comprising: determining a similarity of one of the further spine groups and each of the spine groups placed circumferentially around the defined shape; and placing the further group at a radius of the defined shape at an angle of one of the spine groups that is most similar.
 9. A method according to claim 1, further comprising: translating each of the spine groups placed circumferentially around the defined shape to an x-axis where x=0.5×radius r and y=0.0.
 10. A method according to claim 1, further comprising: setting a maximum and minimum angle for rotating the overlapping spine group in one of a clockwise and anticlockwise direction away from the other overlapping spine group; and moving the rotated overlapping spine group in an outward direction away from the defined shape when one of the maximum or minimum angle is to be exceeded and the overlap exists between the rotated spine group and at least one of the other overlapping spine group and another placed spine group.
 11. A system for placing spine groups within a display, comprising: a shape defined within a display; a unique placement module to place groups of cluster spines circumferentially around the defined shape; an overlap module to identify overlap between at least two of the spine groups; a rotation module to rotate one of the overlapping spine groups in one of a clockwise and anticlockwise direction away from the other overlapping spine group; a further overlap module to determine that overlap exists between the rotated spine group and at least one of the other overlapping spine group and another placed spine group; a translation module to move the rotated overlapping spine group in an outward direction away from the shape; and a processor to execute the modules.
 12. A system according to claim 11, further comprising: a group generator to generate one such spine group by identifying unique cluster spines from a set of cluster spines, selecting an anchor cluster on one of the unique cluster spines, selecting a cluster from one of the remaining cluster spines in the set that is most similar to the anchor cluster, and grafting the cluster of the remaining cluster spine to the anchor cluster of the unique cluster spine as the spine group.
 13. A system according to claim 12, further comprising: a unique determination module to determine that the spine groups are unique when each of the spine groups is sufficiently dissimilar to one another.
 14. A system according to claim 13, further comprising: a similarity module to calculate a similarity between each spine group placed circumferentially around the defined shape.
 15. A system according to claim 14, further comprising: a unique identification module to identify the spine groups as unique when the similarity satisfies a cosine value of at least 0.2.
 16. A system according to claim 11, further comprising: a radius calculator to calculate a radius of the defined shape and to position the spine groups at equal distances around the defined shape based on the radius.
 17. A system according to claim 16, wherein the radius is calculated according to the following equation: $r = {\frac{{Seeds} \times {Max}\; Y}{2} \cdot \pi}$ wherein Seeds is a number of the spine groups to be displayed at equal distances and MaxY is a maximum extent along a y-axis of the spine groups to be displayed.
 18. A system according to claim 11, further comprising: a further group placement module to place further spine groups into the display by determining a similarity of one of the further spine groups and each of the spine groups placed circumferentially around the defined shape, and placing the further group at a radius of the defined shape at an angle of one of the spine groups that is most similar.
 19. A system according to claim 11, wherein the translation module translates each of the spine groups placed circumferentially around the defined shape to an x-axis where x=0.5×radius r and y=0.0.
 20. A system according to claim 11, wherein the rotation module sets a maximum and minimum angle for rotating the overlapping spine group in one of a clockwise and anticlockwise direction away from the other overlapping spine group and moves the rotated overlapping spine group in an outward direction away from the defined shape when one of the maximum or minimum angle is to be exceeded and the overlap exists between the rotated spine group and at least one of the other overlapping spine group and another placed spine group. 